#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)

//#include <stdio.h>
//
//int main()
//{
//	int ret = 0;
//	int i = 0;
//	for (i = 1; i <= 21; i+=2)
//	{
//		ret += i;
//	}
//
//	printf("%d\n", ret);
//	return 0;
//}

#include <stdio.h>
#include <math.h>

int main()
{
	double a = 0.0;
	double b = 0.0;
	scanf("%lf %lf", &a, &b);
	//double c = sqrt(a * a + b * b);
	//double zc = a + b + c;
	//double p = zc / 2.0;
	//double mj = sqrt(p) * sqrt(p - a) * sqrt(p - b) * sqrt(p - c);
	printf("%.3lf %.3lf\n", a + b + sqrt(a * a + b * b), a * b / 2.0);
	return 0;
}

//#include <stdio.h>
//
//int LeapYearCount(int begin, int end)
//{
//	int count = 0;
//	while (begin <= end)
//	{
//		if (((begin % 4 == 0) && (begin % 100 != 0)) || (begin % 400 == 0))
//		{
//			++count;
//		}
//		++begin;
//	}
//
//	return count;
//}
//
//int main()
//{
//	int begin = 0;
//	int end = 0;
//	scanf("%d %d", &begin, &end);
//	int count = LeapYearCount(begin, end);
//	printf("%d\n", count);
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>

//int main()
//{
//	size_t n = 0;
//	scanf("%u", &n);
//	double ret = 0;
//	double i = 0;
//	double max = 0;
//	double min = 10;
//	double tmp = 0;
//	for (i = 0; i < n; ++i)
//	{
//		scanf("%lf", &tmp);
//		if (tmp < min)
//		{
//			min = tmp;
//		}
//		if (tmp > max)
//		{
//			max = tmp;
//		}
//		ret += tmp;
//	}
//	ret = (ret - max - min) / (n - 2);
//	printf("%.2lf\n", ret);
//	return 0;
//}